#include <REGX52.H>
#include "DELAY.h"

sbit XPT2046_DIN=P3^4;
sbit XPT2046_CS=P3^5;
sbit XPT2046_DCLK=P3^6;	//默认低电平
sbit XPT2046_DOUT=P3^7;

unsigned int XPY2046_ReadAD(unsigned char Command)
//定义为unsigned int是因为是12位的分辨率，后四位补0
{
	unsigned char i;
	unsigned int ADValue=0;;
	XPT2046_DCLK=0;
	XPT2046_CS=0;
	for(i=0;i<8;i++)//输入控制字节
	{
		//手册规定DIN不管怎样最高位要为1
		//上升沿有效
		XPT2046_DIN=Command&(0x80>>i);//把Command的8位从高到低放到DIN上
		XPT2046_DCLK=1;//单片机发送给芯片
		XPT2046_DCLK=0;//芯片把自己存的数据给单片机
	}
	//BUSY可以不考虑，因为Tacq的时长是1.5us，已满足BUSY的条件

	//下降沿才是读出
	for(i=0;i<16;i++)//真正模数转换
	{
		XPT2046_DCLK=1;
		XPT2046_DCLK=0;
		if(XPT2046_DOUT){ADValue|=(0x8000>>i);}
		Delay(1);//最高显示192的，在这里加Dealy
	}
	XPT2046_CS=1;
	if(Command&0x08)//Mode位（制字的控制命令）
	{
		return ADValue>>8;//MODE选择的是8位，需要右移8位
	}
	else
	{
		return ADValue>>4;//MODE选择的是12位，需要右移4位
	}
}